<div class="container">
    <!-- <div data-google-ad=""/> -->

    <h1>Configuration types</h1>
    <p>The Eclipse Checkstyle Plugin uses plain standard Checkstyle configuration files. For easier reuse of existing
        Checkstyle configurations and to support some common use cases different Configuration types were introduced
        into the plug-in. The following section explains the existing configuration types:</p>
    <h3>Built-in Configuration</h3>
    <p><a id="Builtin"> </a>Built-in configurations come shipped with the plug-in (or an extending fragment). They can
        not be edited nor deleted. <br/> You can create an own configuration based on a built-in (or any other)
        configuration by copying the configuration. <br/>Built-in configurations cannot be created by the user but can
        be added through a fragment which extends the plugin. <br/>Please read <a
            href="extending_builtin_configurations.html">here</a> for more info.</p>
    <h3>Internal Configuration</h3>
    <p><a id="Internal"> </a>Internal configurations are stored within the Eclipse metadata. Use an internal
        configuration if you don&#39;t want to manage the location of your configuration by yourself. <br/><br/> You
        need to provide a unique name for the configuration, the plugin will generate a file name on its own and store
        the configuration file within the plugins state location inside the workspace.</p>
    <p>An existing Checkstyle configuration file can be imported into the internal configuration by using the
            <em>Import...</em> button. Note that this will overwrite the existing setup for this configuration.<br/>If
        you ever need the configuration file outside the plug-in use the export functionality.</p>
    <p>Internal configurations can be edited and deleted (which will also delete the Checkstyle configuration file).</p>
    <h3>External Configuration</h3>
    <p><a id="External"> </a>Use this configuration type if you have a Checkstyle configuration file outside of an
        Eclipse workspace in your file system. <br/> The External Configuration just points to this configuration file
        and uses it from its location. <br/> You need to provide a unique name for the configuration together with the
        full absolute path to the Checkstyle configuration file.<br/>Relative paths are not supported, but there is
        support to make the absolut path a bit dynamic to allow differing absolute paths on multiple developer
        machines.<br/>To do this use <em>${property}</em> style pattern(s) in the location string, these patterns will
        be resolved from equally named Classpath Variables or Environment properties (passed into Eclipse via -D
        parameter). </p>
    <p>External configurations can by default be edited if the configuration file is writable.<br/>If you have a
        carefully crafted configuration file (with nice comments and all that) - which you don't want to "destroy"
        accidently by using the configuration editor - you can use the <em>Protect Checkstyle configuration file</em>
        option.<br/>When enabled the configuration editor will not touch your file even if it is write enabled.<br/> If
        you delete an External Configuration from the plug-in the external configuration file will <strong>not</strong>
        be deleted.</p>
    <h3>Remote Configuration</h3>
    <p><a id="Remote"> </a>This configuration type can be used if you want to publish your Checkstyle configuration on a
        web server and have all developer in your company use it. <br/>As usual a unique name must be provided together
        with the URL of the Checkstyle configuration file.<br/>If the webserver requires HTTP basic authentication a
        popup dialog will request the credentials input.<br/>Optionally you can let the plugin store the password, which
        will be stored in the Eclipse keyring.<br/>While this offers a reasonable level of security it is not impossible
        to crack.</p>
    <p>For the travelling consultants out there - the <em>Cache configuration file</em> option is for you.<br/>When your
        company has deployed the Checkstyle configuration file on an internal server which is of course not reachable
        when away at a customers site, using this option will tell the plugin to cache the configuration file once it is
        reachable.<br/>When the configured location is not reachable anymore the plugin will use the cached
        configuration file.<br/>This allows you to use the same Checkstyle configuration On- and Offsite.</p>
    <p>A Remote Configuration can not be edited but can be removed from the plug-in.</p>
    <h3>Project Relative Configuration</h3>
    <p><a id="Project"> </a>If you have your Checkstyle configuration file inside a project in your workspace the
        easiest thing is to use the Project Relative Configuration.<br/> Like always a unique name must be provided
        along with the relative path consisting of <em>project-name/relative-path-in-project</em>.<br/> Using the
            <em>Browse...</em> button you can easily select the configuration file from a project.</p>
    <p>A Project Relative configuration can be edited using the Configuration Editor when the configuration file is
        writable. <br/>Like with External Configuration type the configuration file can be protected from accidently
        rewriting it with the Configuration Editor.<br/>When a Project Relative configuration is deleted the Checkstyle
        configuration file remains untouched.</p>
</div>
